package b_lambda;

import a_arrays.Person;

import java.util.Arrays;

/* Lambda表达式优化写法
1.标准格式
(参数类型 参数名1,参数类型 参数名2) -> {
	方法体内容
	return 返回值;
}

2.优化1: 在标准格式的基础上()参数类型是可以直接省略
(参数名1,参数名2) -> {
    方法体内容
	return 返回值;
}

3.优化2: 如果是{}中语句有且只有一句,那么 {} \ return关键词 \ ";" 都可以省略
(参数名1,参数名2) -> 结果

4.优化3: 如果()里面的参数有且只有一个,那么 ()可以直接省略
参数名 -> 结果
 */
public class LambdaDemo03 {
    public static void main(String[] args) {
        //把数组中的原数据修改为新数据后又存入到数组中
        double[] prices = {99.9,128,100};

        Person[] persons = new Person[4]; //[null,null,null,null]
        persons[0] = new Person("lucy",169.8,23);
        persons[1] = new Person("marry",169,18);
        persons[2] = new Person("tom",180,24);
        persons[3] = new Person("jack",189.7,33);

        //lambda表达式的方式:
        Arrays.setAll(prices, (int value) -> {return prices[value] * 0.8;});
        System.out.println(Arrays.toString(prices));

        //sort() 的优化
        Arrays.sort(
                persons,
                (Person o1, Person o2) -> {
                    return Double.compare(o1.getHeight(),o2.getHeight());
                }
        );
        System.out.println(Arrays.toString(persons));

        System.out.println("---------------------------------------------------");

        //lambda表达式优化
        Arrays.setAll(prices,value -> prices[value] * 0.8);

        Arrays.sort(persons,(o1,o2) -> Double.compare(o1.getHeight(),o2.getHeight()));

    }
}


























